package com;

/**
 * 0:在我的案例基础上,实现查找客户姓名是否存在的方法
   1:在我的案例的基础上，添加查找指定位置的客户姓名的方法，方法的声明如下：
   public String find(int index)
   ,并提供完整测试。

   2:修改新增客户的方法,新增客户时,要求客户姓名不能重复(不考虑重名的情况).
 */

import java.util.Scanner;

public class CustManager {

	String custName;
	String custList[] = new String[30];

	/**
	 * 1、增加新客户 找到一个空位置null就放入新用户名
	 * 
	 * @param custName 修改新增客户的方法,新增客户时,要求客户姓名不能重复(不考虑重名的情况).
	 */
	public void addName(String custName) {
//		if (findCust(custName)) {
//			System.out.println("客户姓名不能重复!");
//			return;
//		}
//		for (int i = 0; i < custList.length; i++) {
//			if (custList[i] == null) {
//				custList[i] = custName;
//				System.out.println("添加成功!");
//				return;
//			}
//			System.out.println("添加失败!");
//		}
		for (int i = 0; i < custList.length; i++) {
			if (custList[i] == null) {
				for (int j = 0; j < custList.length; j++) {
					if (custName.equals(custList[j])) {
						System.out.println("客户姓名不能重复!");
						return;
					}
				}
				custList[i] = custName;
				return;
			}
		}
	}

	/**
	 * 2、打印出已经存在的客户列表
	 */
	public void showName() {
		for (int i = 0; i < custList.length; i++) {
			if (custList[i] != null) {
				System.out.println(custList[i]);
			}
		}
	}

	/**
	 * 3、按姓名查找客户
	 */
	public boolean findCust(String name) {
		for (int i = 0; i < custList.length; i++) {
			if (name.equals(custList[i])) {
				return true;
			}
		}
		return false;
	}

	/**
	 * 4、按编号查找客户 在我的案例的基础上，添加查找指定位置的客户姓名的方法， 方法的声明如下： public String find(int index)
	 */
	public String find(int index) {
		// if(index<0||index>=custList.length)
		// return null;
		// return custList[index];
		int len = index - 1;
		if (custList[len] != null) {
			return custList[len];
		}
		return "编号：" + index + " 里面没有客户";
	}

	/**
	 * 5、修改客户名
	 */

	public boolean changeName(String oldName, String newName) {
		boolean find = false;
		if (findCust(newName)) {
			System.out.println("客户姓名不能重复!");
			return find;
		}

		for (int i = 0; i < custList.length; i++) {
			if (oldName.equals(custList[i])) {
				find = true;
				custList[i] = newName;
				break;
			}
		}
		return find;
	}

	/**
	 * 6、按照范围查找
	 */
	public boolean findNum(int start, int end, String name) {
		boolean flag = false;
		for (int i = start; i <= end; i++) {
			if (name.equals(custList[i])) {
				flag = true;
				break;
			}
		}
		return flag;
	}

	/**
	 * 主方法入口
	 * 
	 * @param args
	 */
	public static void main(String[] args) {
		// 主方法测试如下：
		CustManager p = new CustManager();
		while (true) {
			System.out.println(">>>>>>>>>>>>>>>>>>>>>>>>");
			System.out.println("1、增加新客户\n2、显示所有客户\n3、按姓名查找客户\n4、按编号查找客户\n5、修改客户名\n6、按照范围查找\n9、退出");
			System.out.println("请输入功能选择：");
			Scanner input = new Scanner(System.in);
			int num = input.nextInt();

			if (num == 1) {// 增加新客户
				System.out.print("请输入新增的客户姓名：");
				String name = input.next();
				p.addName(name);

			} else if (num == 2) {// 显示所有客户
				p.showName();

			} else if (num == 3) {// 按姓名查找客户
				System.out.print("请输入要查找的客户姓名：");
				String name = input.next();
				boolean flag = p.findCust(name);
				if (flag) {
					System.out.println(name + "在客户名单内");
				} else {
					System.out.println(name + "不在客户名单内");
				}

			} else if (num == 4) {// 按编号查找客户?
				System.out.print("请输入要查找的编号：");
				int index = input.nextInt();
				System.out.println(p.find(index));

			} else if (num == 5) {// 修改客户名
				System.out.println("请输入要修改的学生姓名：");
				String oldname = input.next();
				System.out.println("请输入新的学生姓名：");
				String newname = input.next();
				System.out.println("*****修改结果*****");
				if (p.changeName(oldname, newname)) {
					System.out.println("找到并修改成功！");
				} else {
					System.out.println("没找到该学生！");
				}
				p.showName();

			} else if (num == 6) {// 按照范围查找
				System.out.println("请输入开始时的编号：");
				int start = input.nextInt() - 1;
				System.out.println("请输入结束时的编号：");
				int end = input.nextInt() - 1;
				System.out.println("请输入学生的姓名：");
				String name = input.next();
				if (p.findNum(start, end, name)) {
					System.out.println("范围内有该学生！");
				} else {
					System.out.println("范围内没找到该学生！");
				}

			} else if (num == 9) {// 退出
				System.out.println("程序退出,谢谢使用！");
				break;
			}
		}

	}

}
